一、R-GCN [2017]

《Modeling Relational Data with Graph Convolutional Networks》

  1. 知识库(knowledge base)组织和存储事实知识(factual knowledge),支持包括问答(question answering)和信息检索在内的多种应用。尽管在维护上投入了巨大的努力,即使是最大的知识库(如 DBPedia, Wikidata, Yago)仍然是不完整(incomplete)的, 并且覆盖度(coverage)的缺失会损害下游应用(application)。预测知识库中的缺失信息是统计关系学习(statistical relational learning: SRL )的主要关注点。

    遵从之前关于 SRL 的工作,我们假设知识库存储形式为三元组 (subject, predicate, object)的集合。例如,考虑三元组 (Mikhail Baryshnikov, educated at, Vaganova Academy),我们将 Baryshnikov 和 Vaganova Academy 称作实体( entity),将 educated at 称作关系( relation )。此外,我们假设实体标有类型(如,Vaganova Academy 被标记为大学)。将知识库表示为有向的、带标签的 multigraph 很方便,其中实体对应于节点,而三元组被 labled edge 所编码。如下图所示,红色的标签以及边代表缺失信息,是需要我们推断的。。

    考虑两个基本的 SRL 任务:链接预测(missing triple的 recovery)、实体分类(为实体分配类型或离散属性)。在这两种情况下,许多缺失的信息都可以预期存在于通过邻域结构(neighborhood structure)编码的图中。例如,知道 Mikhail Baryshnikov 在 Vaganova Academy 接受教育,这同时意味着 Mikhail Baryshnikov 应该有标签 person、以及三元组 (Mikhail Baryshnikov, lived in, Russia) 必须属于知识图谱(knowledge graph)。遵循这个直觉,论文《Modeling Relational Data with Graph Convolutional Networks》为关系图(relational graph)中的实体开发了一个编码器模型,并将其应用于这两个任务。

    • 论文的实体分类模型与 GCN 类似,并在图中的每个节点处使用 softmax 分类器。分类器采用 relational graph convolutional network: R-GCN 提供的 node representation 来预测 label 。模型是通过优化交叉熵损失来学习的。

    • 论文的链接预测模型可以被视为一个自编码器( autoencoder),它由一个 encoder 和一个 decoder 组成,其中:

      • encoder:一个 R-GCN,它用于产生实体的 latent feature representation。

      • decoder:一个张量分解模型,它利用这些实体的 representation 来预测 edge label 。尽管原则上任何类型的因子分解模型(或者任何评分函数)都可以作为解码器,但是这里作者使用最简单、最有效的因子分解方法:DistMult 。

    作者观察到,论文的方法在标准 benchmark 上取得了有竞争力的结果,优于直接的因子分解模型(如普通的 DistMult)。当我们考虑更具挑战性的 FB15k-237 数据集时,这种改进尤其大。这些结果表明:在 R-GCN 中对邻域进行显式建模有利于恢复知识库中的 missing fact 。

    论文的贡献如下:

    • 首先,据作者所知,这是第一个证明 GCN 框架可以应用于建模关系数据(relational data)(尤其是链接预测和实体分类任务)的人。

    • 其次,作者介绍了参数共享和强制稀疏约束(enforce sparsity constraint)的技术,并使用它们来将 R-GCN 应用于具有大量关系的 multigraph 。

    • 最后,作者展示了分解模型(以 DistMult 为例)的性能可以通过使用编码器模型来显著提高,其中该编码器在关系图(relational graph)中执行多个信息传播 step 。

  2. 相关工作:

    • 关系建模:我们用于链接预测的 encoder-decoder 方法依赖于解码器中的 DistMult ,这是 RESCAL 分解的一种特殊且更简单的情况,在 multi-relational knowledge base 的背景下比原始的 RESCAL 更高效。

      人们在 SRL 的背景下已经提出和研究了许多替代的分解模型,包括线性分解模型和非线性分解模型,其中许多方法可以被视为经典的张量分解方法(如 CP 或 Tucker)的修改或特殊情况。对于张量分解模型的全面综述,推荐阅读论文《Tensor decompositions and applications》 。

      合并实体之间的 path 到知识库中最近受到了相当大的关注。我们可以将先前的工作分为三个方向:

      • 创建辅助三元组(auxiliary triple)的方法,然后该方法将辅助三元组添加到分解模型的目标函数中。

      • 在预测 edge 时使用 path(或 walk)作为特征的方法。

      • 同时采用这两个方法。

      第一个方向在很大程度上与我们的方向正交,因为我们也预期通过向我们的损失函数中添加类似的项来改善(即,扩展我们的解码器)。

      第二个方向更具有可比性,R-GCN 为这些基于 path 的模型提供了一种计算成本更低的替代方案。直接比较有些复杂,因为 path-based 方法使用不同的数据集(如,来自知识库的 walk 的 sub-sampled 子集)。

    • graph上的神经网络:我们的 R-GCN 编码器模型与 graph 上神经网络领域的许多工作密切相关。R-GCN 编码器的主要动机是:对先前的 GCN 工作的适配,使其适用于大规模和高度 multi-relational 的数据(这是真实世界知识库的特点)。

      该领域的早期工作包括 《The graph neural network model》 的 GNN 。人们后续对原始 GNN 提出了许多扩展,最值得注意的是 《Gated graph sequence neural networks》 和 《Column networks for collective classification》 ,它们都利用了门控机制来促进优化过程。

      R-GCN 可以进一步被视为消息传递神经网络(《Neural message passing for quantum chemistry》)的一个子集,基于可微的消息传递解释。其中,消息传递神经网络包含许多先前的、用于图的神经网络,包括 GCN 。

1.1 模型

  1. 定义一个有向(directed)、带标签 (labeled) 的 multi-graph 为 G=(V,E,R) ,其中节点集合 V={v1,v2,⋯,vn} 代表实体,带标签的边 (vi,r,vj)∈E 表示关系(relation),其中 r∈R 代表关系类型。

1.1.1 R-GCN

  1. 我们的模型主要受到 GCN 所启发,并将基于局部图邻域(local graph neighborhood)的 GCN 扩展到大规模的关系数据。

    GCN 相关的方法(如图神经网络)可以理解为简单的、可微的消息传递框架:

    h→i(l+1)=σ(∑m∈Migm(h→i(l),h→j(l)))

    其中:

    • h→i(l)∈Rdl 为节点 vi 在神经网络第 l 层的隐状态, dl 为对应的维度。

    • Mi 为节点 vi 的传入消息(incoming message)的集合,它通常等于传入边(incoming edge )的集合(即每条边代表一条消息)。

    • 输入的消息按照 gm(⋅,⋅) 的形式聚合。gm(⋅,⋅) 通常选择为message-specific的、类似于神经网络的函数或者仅仅是线性变换 gm(h→i,h→j)=Wh→j 。

    • σ(⋅) 为激活函数。

    事实证明,这类变换非常有效地从局部的、结构化邻域中累积和编码特征,并在诸如图形分类、图半监督学习领域带来显著改进。

  2. 受此类架构的影响,我们在 relational multi-graph 中定义了以下简单的消息传播模型:

    h→i(l+1)=σ(∑r∈R∑j∈Nir1ci,rWr(l)h→j(l)+W0(l)h→i(l))

    其中:

    • Nir 表示节点 vi 在关系类型 r 下的邻居集合。

      这里采用单个 representation h→i(l+1) 来聚合所有类型的关系。

    • ci,r 为一个 problem-specific 正则化常数。它可以从数据中学习,也可以预先选择,如 ci,r=|Nir| 。

      ci,r 可以通过 attention 机制来学习。

    • 为了确保可以直接通过节点 vi 的第 l 层向第 l+1 层传递消息,我们在模型中添加了一个特殊关系类型的自连接(即 W0(l)h→i(l) 项),即 skip-connection 。

      这里 h→i(0)=x→i 为节点的特征向量。如果节点没有特征向量,那么可以使用节点的 one-hot 编码(不需要引入 embedding layer,因为这种情况下图神经网络的第一层就是 embedding layer )。

    直观来看,上式累加了相邻节点的特征向量并进行归一化。与常规的 GCN 不同,这里我们引入特定于具体关系 r 的变换 Wr(l) ,即取决于 edge 的类型和方向。

    • 也可以选择更灵活的函数来替代这里简单的线性变换,如多层神经网络(但是计算代价会更高)。我们把它留待未来的工作。

    • 上式在每个节点的每一层( layer )执行,实践中通常采用稀疏矩阵乘法来有效实现,从而避免对邻域进行显式求和。

    • 可以堆叠多个层,从而允许跨多个关系链的依赖性。

  3. 我们将这个图编码器模型称作关系图卷积网络 R-GCN,R-GCN 模型中单个节点的更新计算图如下所示。红色节点为待更新的节点,蓝色节点为邻域节点。

    我们首先收集来自不同类型的相邻节点以及自身的消息,对每种类型的消息在变换之后归一化求和得到绿色的 representation。最后将不同类型的representation 相加并通过激活函数,从而得到节点更新后的 representation 。

    可以在整个图上共享参数,从而并行地计算每个节点的更新。

    整个 R-GCN 模型就是堆叠大量的这种层,其中上一层的输出作为下一层的输入。如果实体没有特征,则可以将每个节点的 one-hot 作为第一层的输入。

1.1.2 正则化

  1. 如果关系类型数量非常庞大,则R-GCN 模型的参数数量爆炸性增长。实际上,这很容易导致模型对稀疏关系的过拟合,并且模型非常庞大。

    为解决该问题,我们引入两种不同的方法来正则化 R-GCN :basis-decomposition 基分解,以及 block-diagonal-decomposition 块对角分解。

    • basis-decomposition:每个权重 Wr(l)∈Rdl+1×dl 定义为:

      Wr(l)=∑b=1Bar,b(l)Vb(l)

      其中 Vb(l)∈Rdl+1×dl,b=1,2,⋯,B 为一组基变换矩阵,Wr(l) 为这些基变换矩阵的线性组合,线性组合系数为 ar,b(l) 。

      这里 b≪r ,因此可以显著降低参数规模。

    • block-diagonal-decomposition :令 Wr(l) 为一组低维矩阵的直接拼接:

      Wr(l)=[Q1,r(l)00⋯00Q2,r(l)0⋯0⋮⋮⋮⋱⋮000⋯QB,r(l)]

      其中 Wr(l) 为分块对角矩阵, Qb,r(l)∈Rdl+1B×dlB 。

    基分解可以视为不同关系类型之间共享权重的一种方式;块对角分解可以视为每种关系类型权重矩阵的稀疏性约束。块分解结构认为:可以将潜在特征分组,使得组内的特征相比组外的特征更为紧密地耦合。

    这两种分解都减少了高度 multi-relational 的数据(如知识库)所需要的参数数量。同时,我们期望基分解能够缓解稀疏关系的过拟合,因为稀疏关系和非稀疏关系共享基变换矩阵。

  2. 然后,整个 R-GCN 模型堆叠 L 层,其中前一层的输出是下一层的输入。如果不存在节点特征,则可以将节点的 one-hot 编码作为模型的输入。

    虽然我们在这项工作中仅考虑了这种无特征( featureless )的方法,但是我们注意到 GCN 的工作表明:这类模型可以使用预定义的特征向量(如,节点的描述文本的 bag-of-words)。

1.1.3 实体分类

  1. 在节点分类任务中,我们将 R-GCN 最后一层(假设有 L 层)的输出接入一个 softmax 层。我们最小化所有标记节点的交叉熵(忽略所有未标记节点):

    L=−∑vi∈Vy∑k=1Kti,klog⁡hi,k(L)

    其中:

    • Vy 为标记节点的集合。

    • hi,k(L) 为节点 vi 在第 L 层输出的 h→i(L) 的第 k 项。

    • ti,k 为节点 vi 的标签向量 t→i 的第 k 项。

    定义好目标函数之后,我们使用随机梯度下降来训练模型。

    • 虽然我们在目标函数中仅使用了标记节点,但是这并不意味着算法未使用非标记节点。因为在计算 h→i(L) 的过程中我们利用了全部节点(包括非标记节点),因此充分利用了图结构信息。

    • 此外,我们还可以在目标函数中显式添加 LINE 算法之类的非监督损失,从而迫使相邻的节点具有相似的 embedding 。

1.1.4 链接预测

  1. 在链接预测任务中,我们的目标是给定可能的链接 (s,r,o) ,评估其存在链接的概率 f(s,r,o) 从而确定它是否有可能属于边集 E 。

    普通的链接预测任务需要只需要预测二元组 (v1,v2) 是否属于边集,而这里预测的是三元组(包含 r 的信息)。这是通过为每种类型的关系 r 引入一个对角矩阵 Rr 来解决的。

    为解决该问题,我们引入一个图自编码器模型,该模型由一个节点编码器和一个评分函数(解码器)组成。

    • 编码器将每个实体 vi∈V 编码到一个实值向量 v→i∈Rd 。

    • 解码器根据节点的 representation 来重建图的边。换句话说,它通过一个评分函数 f 来对三元组 (subject, relation, object) 打分: f:Rd×R×Rd→R 。

    可以在此框架下解释大多数现有的链接预测方法,但是我们工作的关键区别在于编码器。之前大多数方法直接在训练中优化每个节点 vi∈V 的 representation 向量 v→i ,而这里我们通过 R-GCN 编码器来学到 v→i=h→i(L) 。

    整体架构如下图所示。其中:

    • 图 (a) 表示节点分类的 R-GCN 模型,每个节点具有一个损失函数。

    • 图 b 表示链接预测模型,包含 R-GCN 编码器,以及 DistMult 作为解码器,每条边具有一个损失函数。

  2. 在链接预测任务中,我们使用 DistMult 因子分解作为解码器(评分函数),该方法独立地应用于标准链接预测 baseline 时表现良好。

    在 DistMult 方法中,每个关系 r 关联一个对角矩阵 Rr=diag(Rr,1,⋯,Rr,d)∈Rd×d,三元组 (s,r,o) 的评分为:

    f(s,r,o)=v→s⊤Rrv→o

    和之前的矩阵分解工作一样,我们使用负样本来训练模型。对于每个观察到的“正边”,我们随机采样 ω 条“负边”。对于每个“正边” 代表的三元组 (subject, predicate, object) ,我们通过随机选择不同的 subject 或者不同的 object 来采样。

    我们选择交叉熵作为损失函数,目标是最大化“正边”概率、最小化“负边”概率:

    L=−1(1+ω)|E|∑(s,r,o,y)∈T[y×log⁡ϕ(f(s,r,o))+(1−y)×log⁡(1−ϕ(f(s,r,o)))]

    其中:

    • T 为所有可能的三元组(它是边集合 E 的超集)。

    • y 为指示器:y=1 表示“正边”, y=0 表示 “负边”。

    • ϕ(⋅) 为逻辑回归函数。

1.2 实验

1.2.1 实体分类

  1. 数据集:我们评估了四个数据集,它们以 Resource Description Framework: RDF 格式来描述。数据集中的关系不一定要编码为有向的 subject-object 关系,也可以编码为给定实体之间存在或者不存在某个指定的属性。

    在每个数据集中,要分类的目标是一组实体的属性。我们删除了用于创建 label 的信息,如:AIFB 的雇员和从属关系、MUTAG 的 is Mutagenic 关系、BGS 的 hasLithogenesis 关系、AM 的 objectCategory 和 material 关系。

    数据集的统计信息见下表,其中 Labeled 表示那些带标签的、用于分类的节点,它是所有节点的子集。

    我们采用 《A collection of benchmark datasets for systematic evaluations of machine learning on the semantic web》 的 benchmark 训练集、测试集拆分的方式,并在训练集的基础上继续拆分 20% 样本作为验证集从而进行超参数调优。

  2. Baseline 方法:我们对比了最近的 SOTA 方法: RDF2VEC embedding、Weisfeiler-Lehman kernel: WL、人工设计的特征提取器Feat 。

    • Feat 根据每个节点的入度(in-degree)、出度(out-degree )来拼接每个节点的特征向量,即 feature-based 方法。

    • RDF2VEC 在图上执行随机游走,然后基于 SkipGram 模型来从随机游走序列中学习节点 embedding,然后该 embedding 用于下游的分类任务。

  3. 配置:

    • 我们的 R-GCN 模型采用两层隐层,隐层维度为 16 维(AM 数据集的隐层维度为 10),并采用基分解的正则化方式。

    • 我们使用 Adam 优化器训练 50 个 epoch,学习率为 0.01 。

    • 最后,我们选择归一化常数为 ci,r=|Nir| 。

    • 所有实体分类实验均在具有 64GB 内存的 CPU 节点上运行。

  4. 评估指标:测试集的accuracy 。

  5. 实验效果如下表所示,结论:我们的模型在 AIFB 和 AM 上取得最好的效果,在 MUTAG 和 BGS 数据集上效果较差。

    为了探究R-GCN模型为什么在 MUTAG 和 BGS 数据集上效果较差,我们深入洞察了这些数据集的性质。

    • MUTAG 是分子图的数据集,后来被转换为 RDF 格式,图中的关系要么表示原子键、要么表示某个属性是否存在。

    • BGS 是具有分层特征描述(hierarchical feature description)的岩石(rock)的类型,这些描述类似地转换为 RDF 格式,图中的关系编码了特定属性是否存在、或者属性的层级关系。

    MUTAG 和 BGS 中的标记节点仅仅通过编码了某种特征的high-degree 的中心节点所连接。我们推测:采用固定的归一化常数对于 degree 很高的节点可能会成为问题,这导致了我们的模型在 MUTAG/BGS 数据集上效果不佳。

    克服该问题的一种潜在解决方案是:引入一种注意力机制 ai,j,r 来代替归一化常数 1/ci,r ,其中满足 ∑j,rai,j,r=1 。我们认为这是未来研究的方向。

1.2.2 链接预测

  1. 数据集:链接预测任务通常在 FB15k (关系数据库 Freebase 的子集)和 WN18(WordNet 的子集)上评估。但是在 《Observed versus latent features for knowledge base and text inference》 中,这两个数据集都观察到严重的缺陷:训练集中的三元组 t=(e1,r,e2) ,在测试集中出现了它的逆三元组 t′=(e2,r−1,e1) 。这使得大部分链接预测任务退化为记忆这些三元组。因此,即使是非常简单的基准方法 LinkFeak ,其效果都很大程度上优于现有的方法。LinkFeak 仅仅是将观察到的关系作为特征向量(该特征向量非常稀疏)作为输入,然后采用线性分类器进行分类。

    为解决该问题,《Observed versus latent features for knowledge base and text inference》 提出了一个简化的数据集FB15k-237,它删除了所有这些逆三元组。因此我们选择 FB15k-237 作为我们的主要评估数据集。由于 FB15k 和 WN18 仍被广泛使用,因此我们也包含这些数据集的结果。

  2. baseline 方法:

    • DistMult :对每个节点直接优化embedding,而不是 R-GCN 编码器。

    • LinkFeat :《Observed versus latent features for knowledge base and text inference》 提出的简单的基于邻域的方法。

    • ComplEx:将 DistMult 泛化为复数域来提升对非对称关系的建模。

    • HoIE:利用 circular correlation 代替了vector-matrix的乘积。

    最后,我们还包含了两种经典算法的比较:CP (《The expression of a tensor or a polyadic as a sum of products》)和 TransE (《Translating embeddings for modeling multi-relational data》)。

  3. 我们使用两种常用的评估指标:mean reciprocal rank: MRR、Hits at n: H@n 。我们报告了 raw MRR, filtered MRR,以及 n=1,3,10 时的 filtered Hits 。

    filtered MRR 指的是:对于排名差于 n ,其排名倒数置为零。

  4. 配置:

    • 我们通过验证集来选择 R-GCN 的超参数。

      • 我们发现归一化常数设定为 ci,r=ci=∑r|Nir| 效果最好,即:考虑所有关系的归一化效果最佳。

      • 对于 FB15k 和 WN18,我们使用具有两个基矩阵的基分解正则化,以及使用 200 维的单层编码器。

        对于 FB15k-237,我们发现块对角分解正则化的效果最好,block 的大小为 5 x 5 ,同时我们使用 500 维的两层编码器。

      • 我们对编码器执行 dropout 正则化,dropout 位置在 normalization 之前,dropout 比例为:对于 self-loop 为 0.2,对于其它边为 0.4 。使用dropout 正则化使得我们的训练目标类似于降噪自编码器。

      • 我们对解码器执行 L2 正则化,正则化系数为 0.01。

      • 我们使用 Adam 优化器,学习率为 0.01 。

    • 对于baseline 模型,我们从 《Complex embeddings for simple link prediction》 中的参数(除了 FB15k-237 数据集上的维度)。

    • 为了使得不同方法具有可比性,我们对不同方法采用相同的负样本采样比例(如 ω=1 )。

    • 对所有的模型,我们使用 full-batch 优化。

  5. 我们给出了 FB15k 数据集上,R-GCN 和 DistMult 在不同degree 上的表现。这里的 degree 表示三元组中 subject, object 节点的 degree 均值。在 FB15k 上,与 R0GCN 模型的设计形成对比的是,逆关系( inverse relation )形式的局部上下文 (local context) 将主导(dominate)分解的性能。

    可以发现:R-GCN 在上下文丰富的节点上(即 degree 较高)表现良好,而 DistMult 在上下文稀疏的节点上表现较好。我们观察到这两种模型是互补的,因此可以将这两种模型的优势结合在一起,成为一个新的模型,我们称之为 R-GCN+ :

    f(s,r,t)R-GCN+=αf(s,r,t)R-GCN+(1−α)f(s,r,t)DistMult

    其中 α=0.4 是根据 FB15k 的验证集来选择的。

  6. 我们给出不同模型在 FB15k 和 WN18 上的表现,其中标记 * 的结果来自于 《Complex embeddings for simple link prediction》, 标记** 的结果来自于 《Holographic embeddings of knowledge graphs》 。

    • R-GCN 和 R-GCN+ 均超越了 DistMult。但是,和 LinkFeat 相比,R-GCN 和 R-GCN+ 方法均表现不佳。这突出了逆关系的贡献。

    • 有意思的是:在 FB15k 上 R-GCN+ 超越了 CompIEx,尽管 R-GCN 并未显式建模非对称关系而 CompIEx 显式建模了非对称关系。

      这表明:将 R-GCN 编码器与 CompIEx 的解码器相结合,可能是未来工作的一个有前景的方向。解码器的选择和编码器的选择是相互独立的,原则上可以使用任何模型作为解码器,因此可以考虑使用 ComIEx 作为解码器从而在 R-GCN+ 中显式建模非对称关系。

  7. 在 FB15k-237 数据集上逆关系被删除,此时 LinkFeat 效果非常差。而我们的 R-GCN 比 DistMult 提升 29.8%,这显示了编码器模型的重要性。另外 R-GCN/R-GCN+ 优于所有其它方法。